如果使用Apache+php-fpm建置網站,想要了解php-fpm運作狀態,可以使用Zabbix Server進行服務監控。
以Zabbix Server 為示範,OS:Ubuntu Linux LTS 22.04,Apache-2.4.52,php-fpm8.1
建立PHP-FPM的監控頁面,在設定檔新增/status,/ping設定。
目錄為 /etc/php/8.1/fpm/pool.d/,設定目錄需確認php-fpm的安裝版本,版本會影響指令及程式目錄,如果不同請自行修正。
# sudo nano /etc/php/8.1/fpm/pool.d/www.conf
---
pm.status_path = /status
ping.path = /ping
---
修改完成後,進行設定檔測試。
# sudo php-fpm8.1 -t
無問題後直接重新載入設定檔。
# sudo systemctl reload php8.1-fpm
在Apache的設定檔增加PHP-FPM監控頁面。設定檔案為/etc/apache2/sites-available/000-default.conf。
設定Require ip 127.0.0.1讓只有本機可以讀取監控頁面。如果需要其它ip讀取,請自行增加。
使用ProxyPass 功能去讀取sock,實際位置如果不同請自行修正。
# sudo vim /etc/apache2/sites-available/000-default.conf
---
# add php8.1-fpm status
<LocationMatch "/status">
Require ip 127.0.0.1
# Require ip 1.2.3.4 # Your IP here
# Adjust the path to the socket if needed
ProxyPass "unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/status"
</LocationMatch>
# add php8.1-fpm ping
<LocationMatch "/ping">
Require ip 127.0.0.1
# Require ip 1.2.3.4 # Your IP here
# Adjust the path to the socket if needed
ProxyPass "unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/ping"
</LocationMatch>
---
修改完成後,進行設定檔測試
# sudo apachectl configtest
無問題後直接重新載入設定檔
# sudo systemctl reload apache2
在本機使用curl 連接/status,/ping進行測試
# curl -L 127.0.0.1/status
# curl -L 127.0.0.1/ping
測試成功會出現PHP-FPM訊息,可以進入Zabbix WEB設定
Zabbix Server內建的Templates>Applications 有PHP-FPM by HTTP,PHP-FPM by Zabbix agent 2種。
官方連結說明翻譯:
此範本是由 Zabbix 開發的,用於監控 FastCGI Process Manager (PHP-FPM),無需任何外部腳本即可運作。
由於 Zabbix 批量資料收集,大部分指標都是一次性收集的。
此範本PHP-FPM by Zabbix agent- 透過使用 HTTP 代理遠端輪詢 PHP-FPM 狀態頁面來收集指標。
請注意,此解決方案支援 HTTPS 和重定向。
新增頁面設定如下:
依官網說明在Maros頁面新增7組參數,並填入對應的值。
{$PHP_FPM.PORT}
80
{$PHP_FPM.SCHEME}
http
{$PHP_FPM.HOST}
localhost
{$PHP_FPM.STATUS.PAGE}
status
{$PHP_FPM.PING.PAGE}
ping
{$PHP_FPM.PING.REPLY}
pong
{$PHP_FPM.QUEUE.WARN.MAX}
80
官方連結說明翻譯:
此範本是為了透過 Zabbix 代理程式監控 FastCGI 進程管理器 (PHP-FPM) 而開發的,無需任何外部腳本即可運作。
由於 Zabbix 批量資料收集,大部分指標都是一次性收集的。
此範本PHP-FPM by Zabbix agent- 透過使用 Zabbix 代理在本地輪詢 PHP-FPM 狀態頁面來收集指標。
請注意,此模板不支援 HTTPS 和重定向(的限制web.page.get)。
它還使用Zabbix代理程式收集php-fpmLinux進程統計信息,例如CPU使用率、記憶體使用率以及進程是否正在運行。
新增頁面設定如下:
依官網說明在Maros頁面新增7組參數,並填入對應的值。
{$PHP_FPM.PORT}
80
{$PHP_FPM.HOST}
localhost
{$PHP_FPM.STATUS.PAGE}
status
{$PHP_FPM.PING.PAGE}
ping
{$PHP_FPM.PING.REPLY}
pong
{$PHP_FPM.QUEUE.WARN.MAX}
80
{$PHP_FPM.PROCESS_NAME}
php-fpm
在Configuration > Host中新增2個Templates。
在資料Items中也可以看到PHP-FPM by Zabbix agent比PHP-FPM by HTTP 多收集 CPU使用率、記憶體使用率以及進程是否正在運行等3種資料。
Zabbix使用Zabbix agent2監控PHP-FPM Service,是由Zabbix Server透過監控主機的Zabbix agent2捉取資料,屬於被動模式。
內容如有介紹不周,請多多指教,謝謝。
文章也同步於個人網站